There are numerous technologies for the distribution of data over networks such as the Internet. Among these technologies are systems that permit data such as content to include executable code sent from a server to a computing device such as a cellular phone, laptop computer, or desktop computer, where the executable code is executed within some host application. For example, web browsers may host the executable code. The executable code allows content providers to execute programmed behavior to, for example, collect or manipulate data available from the computing device. Thus, the host application acts as an extension environment, where its operation is based the application itself and the functions performed by the hosted executable code. Although such existing systems often provide enhanced user experiences, these systems also raise security and privacy issues.
For example, allowing applications with executable code to access resources within a computing device exposes the computing device to possible attack. The executable code may include malicious code such as viruses or other programs or scripts (e.g., such as executed by a web browser) designed to steal information from the computing device. The vulnerable resources on the computing device include, for example, location information (e.g., global positioning system information), documents, images, address book information, call history, and the like.
Some existing systems include separate, layered access policy rules for controlling access by application programs to device resources. For example, if a user authorizes a browser to access particular resources on a mobile computing device and if the browser exposes that capability to web pages, then every web page (malicious or not) rendered by the browser has access to the particular resources. Additionally, operating systems within the existing systems may also provide a policy system to administer these access constraints. The existing systems, however, lack a policy system that provides the granularity to control access to the resources by entities (e.g., the web pages and the scripts they contain) hosted within an execution extension environment (e.g., the browser).